// 测试MCP透明化功能
const { ToolManager } = require('../dist/tools/index.js');
const { ChatManager } = require('../dist/core/chat.js');

async function testMCPTransparent() {
    console.log('=== 🔍 测试MCP透明化功能 ===\n');
    
    const chatManager = new ChatManager();
    const toolManager = chatManager.getToolManager();
    
    // 检查AI可见的工具（应该不包含mcp-client）
    console.log('📋 步骤1: 检查AI可见的工具列表');
    const visibleTools = toolManager.getAllTools();
    console.log(`AI可见工具数量: ${visibleTools.length}`);
    console.log('AI可见工具:');
    visibleTools.forEach(tool => {
        console.log(`  - ${tool.name}: ${tool.description}`);
    });
    console.log('');
    
    // 检查是否还有mcp-client工具暴露给AI
    const hasMCPClient = visibleTools.some(tool => tool.name === 'mcp-client');
    console.log(`❓ AI是否能看到mcp-client工具: ${hasMCPClient ? '❌ 是（不应该暴露）' : '✅ 否（正确）'}`);
    console.log('');
    
    // 测试MCP服务器连接（后台操作）
    console.log('🔗 步骤2: 后台连接MCP服务器');
    try {
        const connected = await chatManager.connectMCPServer(
            'transparent-server',
            'node index.js',
            'E:\\mcp_server\\mcp_server\\out'
        );
        
        if (connected) {
            console.log('✅ MCP服务器连接成功（对AI透明）');
            
            // 生成包含远程工具的系统提示词
            console.log('\n📝 步骤3: 检查生成的系统提示词');
            const systemPrompt = toolManager.generateToolPrompt();
            const mcpToolsCount = (systemPrompt.match(/🌐/g) || []).length;
            console.log(`系统提示词包含 ${mcpToolsCount} 个MCP远程工具`);
            
            if (mcpToolsCount > 0) {
                console.log('✅ MCP远程工具已成功注入系统提示词');
                console.log('\n🎯 AI现在可以直接调用这些远程工具:');
                
                // 显示可用的远程工具格式
                const lines = systemPrompt.split('\n');
                const mcpToolLines = lines.filter(line => line.includes('🌐'));
                mcpToolLines.slice(0, 3).forEach(line => {
                    if (line.includes('**') && line.includes('::')) {
                        const match = line.match(/\*\*(.*?)\*\*/);
                        if (match) {
                            console.log(`  - ${match[1]}`);
                        }
                    }
                });
                if (mcpToolLines.length > 3) {
                    console.log(`  ... 还有 ${mcpToolLines.length - 3} 个远程工具`);
                }
            } else {
                console.log('❌ MCP远程工具未注入系统提示词');
            }
            
            // 测试透明调用
            console.log('\n🧪 步骤4: 测试透明工具调用');
            try {
                // 假设有一个叫list-directory-tree的远程工具
                const result = await toolManager.executeTool('transparent-server::list-directory-tree', {
                    dir: '.',
                    maxDepth: 1
                });
                console.log('✅ MCP远程工具调用成功');
                console.log('📤 调用结果（前200字符）:', result.substring(0, 200) + '...');
            } catch (error) {
                console.log('❌ MCP远程工具调用失败:', error.message);
            }
            
            // 清理连接
            console.log('\n🧹 步骤5: 清理MCP连接');
            await chatManager.disconnectMCPServer('transparent-server');
            console.log('✅ MCP服务器连接已断开');
            
        } else {
            console.log('❌ MCP服务器连接失败');
        }
        
    } catch (error) {
        console.log('❌ MCP连接测试失败:', error.message);
    }
    
    console.log('\n🎉 MCP透明化测试完成！');
    console.log('\n💡 总结:');
    console.log('  ✅ MCP客户端已对AI隐藏');
    console.log('  ✅ 远程工具可以透明注入系统提示词');
    console.log('  ✅ AI可以直接调用远程工具（格式：server::tool-name）');
    console.log('  ✅ MCP操作完全在后台进行');
}

testMCPTransparent().catch(console.error);
